PrestaShop Google Tag Manager

Dokumentacja PrestaShop Google Tag Manager
Kompleksowa dokumentacja dla modułu PrestaShop zaawansowanej integracji z Google Tag Manager (cc_ps_googletrack) z obsługą Enhanced Ecommerce, Enhanced Conversions oraz pełną konfiguracją eventów.

Spis treści
  1. Wprowadzenie
  2. Instalacja i wymagania systemowe
  3. Aktywacja modułu
  4. Podstawowa konfiguracja GTM
  5. Konfiguracja eventów
  6. Rozszerzona warstwa danych
  7. Enhanced Conversions (dane użytkownika)
  8. Tryb debugowania
  9. Logowanie eventów
  10. Własny kod śledzący
  11. System tłumaczeń
  12. Eventy – szczegóły
  13. Kalendarz eventów
  14. Test Tag Assistant
  15. Rozwiązywanie problemów
  16. FAQ

1. Wprowadzenie
CC Google Tag Manager to zaawansowany moduł PrestaShop zapewniający pełną integrację z Google Tag Manager. Moduł automatycznie śledzi wszystkie kluczowe eventy Enhanced Ecommerce zgodnie z najnowszymi standardami.

Kluczowe funkcje modułu:
  • Pełna integracja z Google Tag Manager (GTM)
  • Automatyczne śledzenie 18 różnych eventów
  • Enhanced Ecommerce zgodnie ze standardami Google
  • Enhanced Conversions z hashowanymi danymi użytkownika
  • Rozszerzona warstwa danych (dataLayer) z dodatkowymi informacjami
  • Konfiguracja włączania/wyłączania poszczególnych eventów
  • Tryb debugowania z logowaniem do konsoli przeglądarki
  • Logowanie eventów do bazy danych z przeglądaniem
  • Własny kod JavaScript wykonywany na wszystkich stronach
  • Pełny system tłumaczeń (polski, angielski, możliwość dodania innych języków)
  • Zgodność z PrestaShop 1.7.x i 8.x oraz 9.x
  • Obsługa Google Consent Mode 2.0

2. Instalacja i wymagania systemowe
Wymagania systemowe
  • PrestaShop 1.7.0.0 lub nowszy (testowane do wersji 9.0)
  • PHP 7.4 lub nowszy
  • Dostęp do panelu administracyjnego PrestaShop
  • Konto Google Tag Manager (bezpłatne)
  • Opcjonalnie: Google Analytics 4 (bezpłatne)
Proces instalacji
  1. Pobierz plik ZIP modułu z oficjalnej strony cocos.codes
  2. Zaloguj się do panelu administracyjnego PrestaShop
  3. Przejdź do: Moduły → Menedżer modułów
  4. Kliknij „Wgraj moduł” w prawym górnym rogu
  5. Wybierz pobrany plik ZIP i kliknij „Wgraj ten moduł”
  6. Po zakończeniu instalacji kliknij „Konfiguruj”
  7. Moduł jest gotowy do konfiguracji
Info
Po instalacji moduł automatycznie rejestruje wszystkie niezbędne hooki PrestaShop oraz tworzy tabelę w bazie danych do logowania eventów (jeśli funkcja jest włączona). Instalacja nie wymaga żadnych dodatkowych kroków technicznych.

3. Aktywacja modułu
Moduł nie wymaga osobnej aktywacji licencji – działa od razu po instalacji. Jednak aby rozpocząć śledzenie, musimy skonfigurować podstawowe ustawienia.

Pierwsze kroki po instalacji:
  1. Przejdź do Moduły → Menedżer modułów
  2. Znajdź moduł „CC Google Tag Manager”
  3. Kliknij „Konfiguruj”
  4. Zostaniemy przeniesieni do strony ustawień modułu
Wskazówka
Przed rozpoczęciem konfiguracji warto przygotować ID kontenera GTM (format: GTM-XXXXXX). Możemy je znaleźć w panelu Google Tag Manager po utworzeniu nowego kontenera dla naszej witryny.

4. Podstawowa konfiguracja GTM
Konfiguracja Google Tag Manager jest pierwszym krokiem do uruchomienia śledzenia w sklepie.

Tworzenie kontenera GTM:
  1. Przejdź do tagmanager.google.com
  2. Zaloguj się kontem Google
  3. Kliknij „Utwórz konto”
  4. Podaj nazwę konta (np. nazwę firmy)
  5. Podaj nazwę kontenera (np. nazwę sklepu)
  6. Wybierz „Web” jako typ kontenera
  7. Zaakceptuj warunki usługi
  8. Skopiuj ID kontenera (GTM-XXXXXX)
Konfiguracja w module:
  1. W konfiguracji modułu znajdź sekcję „Podstawowa konfiguracja”
  2. Zaznacz checkbox „Włącz Google Tag Manager”
  3. Wklej skopiowany GTM Container ID (np. GTM-ABC1234)
  4. Kliknij „Zapisz” na dole strony
Elementy podstawowej konfiguracji:
OpcjaOpisWartość
Włącz GTMAktywuje śledzenie przez GTMTAK / NIE
GTM Container IDIdentyfikator kontenera GTMGTM-XXXXXX
Co się dzieje po zapisaniu:
  • Kod GTM (gtag.js) jest automatycznie dodawany do wszystkich stron sklepu
  • Skrypt GTM umieszczany jest w sekcji <head>
  • Noscript fallback dodawany jest zaraz po <body>
  • DataLayer zaczyna zbierać dane o eventach
  • Wszystkie eventy są automatycznie przesyłane do GTM
Sukces
Po poprawnej konfiguracji kod GTM będzie widoczny w źródle strony. Możemy to sprawdzić przez prawym przyciskiem myszy → „Pokaż źródło strony” i wyszukując GTM-XXXXXX. Znajdziemy tam zarówno główny skrypt jak i dataLayer.

5. Konfiguracja eventów
Moduł obsługuje 18 różnych eventów. Każdy event możemy włączyć lub wyłączyć niezależnie według potrzeb biznesowych.

Lista dostępnych eventów:
EventOpisKiedy jest wywoływany
page_viewWyświetlenie stronyNa każdej stronie sklepu
view_itemWyświetlenie produktuNa stronie produktu
view_item_listWyświetlenie listy produktówKategorie, wyniki wyszukiwania, strona główna
select_itemKliknięcie w produktKliknięcie na produkt z listy
add_to_cartDodanie do koszykaPo dodaniu produktu do koszyka
remove_from_cartUsunięcie z koszykaPo usunięciu produktu z koszyka
view_cartWyświetlenie koszykaNa stronie koszyka
begin_checkoutRozpoczęcie zamówieniaPierwszy krok realizacji zamówienia
add_shipping_infoDodanie informacji o dostawieWybór metody dostawy
add_payment_infoDodanie informacji o płatnościWybór metody płatności
purchaseZakupStrona potwierdzenia zamówienia
searchWyszukiwanieUżycie wyszukiwarki sklepu
select_promotionKliknięcie w promocjęKliknięcie w baner promocyjny
loginLogowanieZalogowanie klienta
sign_upRejestracjaRejestracja nowego klienta
add_to_wishlistDodanie do listy życzeńDodanie produktu do wishlist
shareUdostępnianieKliknięcie w przycisk social share
Włączanie/wyłączanie eventów:
  1. W konfiguracji modułu przejdź do sekcji „Konfiguracja eventów”
  2. Znajdź listę wszystkich 18 eventów
  3. Zaznacz checkboxy przy eventach które chcemy śledzić
  4. Odznacz checkboxy przy eventach które chcemy wyłączyć
  5. Skorzystaj z przycisków „Zaznacz wszystkie” lub „Odznacz wszystkie” dla szybkiej konfiguracji
  6. Kliknij „Zapisz”
Przekazywanie konfiguracji do JavaScript:
// Konfiguracja eventów przekazywana do JS jako: window.ccpsEventConfig = { 'page_view': true, 'view_item': true, 'add_to_cart': true, 'purchase': false, // ... itd. };

// Sprawdzanie czy event jest włączony: function isEventEnabled(eventName) { if (typeof config.eventConfig[eventName] !== 'undefined') { return config.eventConfig[eventName]; } return true; // Domyślnie włączone }
Notatka
Wyłączone eventy nie są w ogóle wysyłane do dataLayer, co oszczędza zasoby i nie zaśmieca danych w Google Analytics. Jeśli event jest wyłączony, w trybie debug pojawi się komunikat „Event wyłączony: nazwa_eventu” zamiast wysyłania danych.

6. Rozszerzona warstwa danych
Funkcja rozszerzonej warstwy danych (Enhanced Data) dodaje dodatkowe informacje do każdego eventu, wzbogacając analizy w Google Analytics.

Co zawiera rozszerzona warstwa danych:
  • Dane strony – typ strony, URL, tytuł, język, waluta
  • Dane użytkownika – status klienta (visitor/guest/customer), ID użytkownika
  • Dane produktów – pełne kategorie (do 5 poziomów), marki, atrybuty
  • Dane zamówień – metody dostawy, metody płatności, kupony
Konfiguracja rozszerzonej warstwy danych:
  1. W konfiguracji modułu znajdź sekcję „Rozszerzone opcje danych”
  2. Zaznacz checkbox „Rozszerzona warstwa danych”
  3. Zaznacz checkbox „Dane strony” aby dodać informacje o stronie
  4. Zapisz ustawienia
Przykład rozszerzonej warstwy danych:
dataLayer.push({ 'event': 'page_view', 'page_type': 'product', 'page_url': 'https://example.com/produkt', 'page_title': 'Nazwa produktu - Sklep', 'language': 'pl', 'currency': 'PLN', 'customer_status': 'customer', 'user_id': 123 });
Typy stron rozpoznawane przez moduł:
Typ stronyWartość page_typeKiedy
Strona głównahomeIndexController
Strona produktuproductProductController
KategoriacategoryCategoryController
KoszykcartCartController
Realizacja zamówieniacheckoutOrderController
Potwierdzenie zakupupurchaseOrderConfirmationController
WyszukiwaniesearchSearchController
Strona treścicontentCmsController
InneotherWszystkie pozostałe
Kategorie produktów – hierarchia:
  • item_category – kategoria główna (z normalizacją – pierwsza litera wielka)
  • item_category2 – podkategoria poziom 2
  • item_category3 – podkategoria poziom 3
  • item_category4 – podkategoria poziom 4
  • item_category5 – podkategoria poziom 5
Wskazówka
Rozszerzona warstwa danych jest szczególnie przydatna przy tworzeniu zaawansowanych segmentów w Google Analytics. Możemy na przykład analizować konwersję osobno dla różnych typów stron, języków czy statusów klientów. Włączenie tej funkcji jest wysoce rekomendowane.

7. Enhanced Conversions (dane użytkownika)
Enhanced Conversions to funkcja Google Ads która poprawia dokładność pomiaru konwersji poprzez przesyłanie hashowanych danych użytkowników.

Co to są Enhanced Conversions:
  • Hashowane (SHA-256) dane osobowe użytkowników
  • Email, telefon, imię, nazwisko, miasto, kod pocztowy, kraj
  • Przesyłane do Google w bezpiecznej formie
  • Umożliwiają lepsze przypisywanie konwersji do kampanii reklamowych
  • Wymagają zgody użytkownika (RODO/GDPR)
Konfiguracja Enhanced Conversions:
  1. W konfiguracji modułu znajdź sekcję „Rozszerzone opcje danych”
  2. Zaznacz checkbox „Dane użytkownika (Enhanced Conversions)”
  3. Upewnij się, że masz zgodę użytkowników na przetwarzanie danych (RODO)
  4. Zapisz ustawienia
Ostrzeżenie
Przesyłanie danych użytkownika wymaga zgody RODO! Upewnijmy się, że nasz sklep ma aktualną politykę prywatności i cookies oraz że użytkownicy wyrażają świadomą zgodę na przetwarzanie danych. Zalecamy integrację z modułem zarządzania zgodami cookies jak CC PrestaShop Cookies.
Jakie dane są hashowane i przesyłane:
DaneŹródłoFormat
Email$customer->emailhash(’sha256′, strtolower(trim($email)))
TelefonPierwszy adres klientahash(’sha256′, tylko cyfry)
ImięPierwszy adres klientahash(’sha256′, strtolower(trim()))
NazwiskoPierwszy adres klientahash(’sha256′, strtolower(trim()))
MiastoPierwszy adres klientahash(’sha256′, strtolower(trim()))
Kod pocztowyPierwszy adres klientahash(’sha256′, trim())
KrajPierwszy adres klientaKod kraju (bez hashowania)
Przykład danych w dataLayer:
dataLayer.push({ 'event': 'purchase', 'user_id': 123, 'customer_status': 'customer', 'user_data': { 'email_hash': 'b4c9a289323b21a01c3e807...', 'phone_hash': '8d23cf6c86e834a7aa6edd9...', 'address': { 'first_name': 'a5bfc9e07964f8dddeb95fc...', 'last_name': '5e884898da28047151d0e56...', 'city': '1c383cd30b7c298ab50293a...', 'postal_code': '4e07408562bedb8b60ce05c...', 'country': 'PL' } } });
Statusy klientów:
  • visitor – niezalogowany użytkownik bez konta
  • guest – zalogowany jako gość (guest checkout)
  • customer – zalogowany użytkownik z pełnym kontem
Info
Wszystkie dane osobowe są hashowane algorytmem SHA-256 przed wysłaniem do Google, co oznacza, że Google nie otrzymuje danych w formie czytelnej. Hash jest jednokierunkowy – nie można odtworzyć oryginalnych danych z hasha. To spełnia wymogi RODO dotyczące minimalizacji danych.

8. Tryb debugowania
Tryb debugowania umożliwia szczegółowe śledzenie wszystkich eventów w konsoli przeglądarki, co jest nieocenione podczas testowania i rozwiązywania problemów.

Włączanie trybu debug:
  1. W konfiguracji modułu znajdź sekcję „Rozszerzone opcje danych”
  2. Zaznacz checkbox „Tryb debugowania”
  3. Zapisz ustawienia
  4. Otwórz sklep w nowej karcie przeglądarki
  5. Otwórz konsolę deweloperską (F12 → zakładka Console)
  6. Odśwież stronę
Co wyświetla tryb debug:
  • Inicjalizację modułu: [CC Google Track] CcpsGoogleTrack v2.0 – inicjalizacja
  • Każdy wysłany event: [CC Google Track] Event: add_to_cart
  • Dane eventu (obiekt ecommerce)
  • Wyłączone eventy: [CC Google Track] Event wyłączony: share
  • Operacje AJAX (pobieranie danych produktów, wishlist, itp.)
  • Błędy parsowania i obsługi eventów
  • Eventy PrestaShop (updatedCart, updatedProduct)
  • Zakończenie inicjalizacji
Przykład logów w konsoli:
[CC Google Track] CcpsGoogleTrack v2.0 - inicjalizacja [CC Google Track] Event: page_view {page_type: "product", ...} [CC Google Track] Handler zarejestrowany: add_to_cart [CC Google Track] Handler zarejestrowany: remove_from_cart [CC Google Track] Handler zarejestrowany: select_item [CC Google Track] PrestaShop event: updatedCart {reason: {...}} [CC Google Track] Event: add_to_cart {currency: "PLN", value: 99.99, items: [...]} [CC Google Track] CcpsGoogleTrack v2.0 - inicjalizacja zakończona
Różne komunikaty debug:
KomunikatZnaczenie
Event wyłączony: nazwa_eventuEvent jest wyłączony w konfiguracji
Pobieranie danych produktu przez AJAX dla XModuł pobiera dane produktu z serwera
Otrzymano dane produktu z PHP dla XDane produktu zostały pobrane pomyślnie
Błąd AJAX XWystąpił błąd podczas pobierania danych
Błąd parsowania JSONOdpowiedź AJAX nie jest poprawnym JSON
Handler zarejestrowany: nazwaObsługa eventu została zainicjowana
Wskazówka
Tryb debug należy włączyć TYLKO podczas testowania. W środowisku produkcyjnym powinien być wyłączony, aby nie zaśmiecać konsoli odwiedzających i nie spowalniać strony. Zalecamy włączenie trybu debug na środowisku testowym/staging przed wdrożeniem na produkcję.

9. Logowanie eventów
Funkcja logowania eventów zapisuje wszystkie eventy do bazy danych PrestaShop, umożliwiając ich późniejsze przeglądanie i analizę.

Włączanie logowania eventów:
  1. W konfiguracji modułu znajdź sekcję „Rozszerzone opcje danych”
  2. Zaznacz checkbox „Logowanie eventów”
  3. Zapisz ustawienia
  4. Moduł automatycznie utworzy tabelę ps_ccpsgoogletrack_logs w bazie danych
Struktura tabeli logów:
KolumnaTypOpis
id_logINT AUTO_INCREMENTKlucz główny
event_nameVARCHAR(100)Nazwa eventu (np. add_to_cart)
data_layerTEXTPełny dataLayer w formacie JSON
date_addDATETIMEData i czas dodania
Przeglądanie logów:
  1. W konfiguracji modułu przejdź do zakładki „Logi”
  2. Zobaczysz tabelę z ostatnimi 100 logami
  3. Kolumny: Data, Event, Data Layer (JSON)
  4. Możliwość wyczyszczenia wszystkich logów przyciskiem „Wyczyść logi”
Przykładowy wpis w logu:
Event: add_to_cart Data: 2025-12-10 14:30:45 Data Layer: { "event": "add_to_cart", "ecommerce": { "currency": "PLN", "value": 99.99, "items": [ { "item_id": "123", "item_name": "Produkt testowy", "price": 99.99, "quantity": 1 } ] }, "page_type": "product", "customer_status": "visitor" }
Kiedy eventy są logowane:
  • Eventy z panelu administracyjnego (hook displayHeader) – logowanie PHP
  • Eventy wysyłane przez JavaScript – logowanie przez AJAX
  • Wszystkie eventy poza tymi wyłączonymi w konfiguracji
  • Logowanie działa niezależnie od trybu debug
Czyszczenie logów:
  1. W zakładce „Logi” kliknij przycisk „Wyczyść logi”
  2. Potwierdź operację w oknie dialogowym
  3. Wszystkie logi zostaną usunięte z bazy danych
  4. Pojawi się komunikat potwierdzający
Ostrzeżenie
Logowanie eventów może generować dużą ilość danych w bazie, szczególnie w sklepach o dużym ruchu. Zalecamy regularne czyszczenie logów (np. co miesiąc) lub włączanie logowania tylko podczas testowania. W środowisku produkcyjnym zwykle nie ma potrzeby permanentnego logowania.

10. Własny kod śledzący
Funkcja własnego kodu umożliwia dodanie niestandardowego JavaScript który będzie wykonywany na wszystkich stronach sklepu.

Zastosowania własnego kodu:
  • Dodatkowe eventy GTM nie obsługiwane przez moduł
  • Niestandardowe śledzenie interakcji użytkowników
  • Integracja z innymi narzędziami analitycznymi
  • Modyfikacje dataLayer według własnych potrzeb
  • Skrypty remarketingowe Facebook Pixel, TikTok Pixel, etc.
Konfiguracja własnego kodu:
  1. W konfiguracji modułu znajdź sekcję „Własny kod śledzący”
  2. Zaznacz checkbox „Włącz własny kod”
  3. W dużym polu tekstowym wpisz swój kod JavaScript
  4. Nie używaj tagów <script> – są dodawane automatycznie
  5. Zapisz ustawienia
Przykładowy kod własny:
// Własny event do dataLayer dataLayer.push({ 'event': 'custom_scroll', 'scroll_depth': '50%' });

// Śledzenie kliknięć w określone elementy
document.querySelectorAll('.special-button').forEach(function(btn) {
btn.addEventListener('click', function() {
dataLayer.push({
'event': 'special_button_click',
'button_text': this.textContent
});
});
});

// Facebook Pixel !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', 'YOUR_PIXEL_ID'); fbq('track', 'PageView');
Dostępne zmienne w własnym kodzie:
  • window.dataLayer – główny dataLayer GTM
  • window.ccpsGTMDebug – czy tryb debug jest włączony
  • window.ccpsEventConfig – konfiguracja eventów
  • window.ccpsUserLogged – czy użytkownik jest zalogowany
  • window.ccpsAjaxUrl – URL do AJAX controllera modułu
  • window.ccpsTranslations – tablica tłumaczeń
  • prestashop – obiekt PrestaShop (jeśli dostępny)
Przykład użycia zmiennych modułu:
// Sprawdź czy użytkownik jest zalogowany if (window.ccpsUserLogged) { dataLayer.push({ 'event': 'logged_user_pageview' }); }

// Użyj konfiguracji eventów
if (window.ccpsEventConfig && window.ccpsEventConfig['custom_event']) {
// Wysyłaj tylko jeśli event jest włączony
dataLayer.push({
'event': 'custom_event'
});
}

// Debug log jeśli tryb debug włączony if (window.ccpsGTMDebug) { console.log('[Mój kod] Inicjalizacja zakończona'); }
Notatka
Własny kod jest dodawany na końcu sekcji HEAD, po kodzie GTM i po wszystkich skryptach modułu. Oznacza to, że wszystkie zmienne i funkcje modułu są już dostępne. Kod jest wykonywany na każdej stronie sklepu, więc należy uważać na wydajność.

11. System tłumaczeń
Moduł posiada pełny system tłumaczeń obsługujący wiele języków.

Tłumaczone elementy:
ElementPrzykład PLPrzykład EN
Nazwy eventówDodanie do koszyka (add_to_cart)Add to cart (add_to_cart)
Komunikaty debugEvent wyłączony:Event disabled:
Komunikaty błędówBłąd pobierania danych produktuError fetching product data
StatusyAktywnyActive
PrzyciskiZapiszSave
Mechanizm przekazywania tłumaczeń do JavaScript:
// W PHP (ccpsgoogletrack.php): $translations = [ 'eventDisabled' => $this->l('Event wyłączony:'), 'event' => $this->l('Event:'), 'sendingEvent' => $this->l('Wysyłanie'), // ... itd. ]; $output .= '<script>window.ccpsTranslations = ' . json_encode($translations, JSON_UNESCAPED_UNICODE) . ';</script>';

// W JavaScript (ccpsgoogletrack.js):
function t(key, defaultText) {
if (typeof window.ccpsTranslations !== 'undefined'
&& window.ccpsTranslations[key]) {
return window.ccpsTranslations[key];
}
return defaultText || key;
}

// Użycie: debugLog(t('eventDisabled', 'Event wyłączony:') + ' ' + event);
Dodawanie nowego języka:
  1. Skopiuj plik translations/pl.php
  2. Zmień nazwę na kod języka np. translations/de.php (niemiecki)
  3. Otwórz plik w edytorze tekstu
  4. Przetłumacz wszystkie wartości po prawej stronie (po znaku =)
  5. NIE zmieniaj kluczy (po lewej stronie)
  6. Zapisz plik z kodowaniem UTF-8
  7. Wyczyść cache PrestaShop
Przykład pliku tłumaczeń:
<?php global $_MODULE; $_MODULE = array(); $_MODULE['<{ccpsgoogletrack}prestashop>ccpsgoogletrack_eventdisabled'] = 'Event wyłączony:'; $_MODULE['<{ccpsgoogletrack}prestashop>ccpsgoogletrack_event'] = 'Event:'; $_MODULE['<{ccpsgoogletrack}prestashop>ccpsgoogletrack_sendingevent'] = 'Wysyłanie'; // ... więcej tłumaczeń
Lista wszystkich kluczy tłumaczeń:
  • eventDisabled – „Event wyłączony:”
  • event – „Event:”
  • sendingEvent – „Wysyłanie”
  • receivedData – „Otrzymano dane produktu z PHP dla”
  • gettingProductData – „Pobieranie danych produktu przez AJAX dla”
  • ajaxError – „Błąd AJAX”
  • parsingError – „Błąd parsowania JSON:”
  • dataError – „Błąd pobierania danych produktu”
  • handlerRegistered – „Handler zarejestrowany”
  • initialization – „CcpsGoogleTrack v2.0 – inicjalizacja”
  • initComplete – „CcpsGoogleTrack v2.0 – inicjalizacja zakończona”
  • prestashopEvent – „PrestaShop event”
Wskazówka
Jeśli sklep jest wielojęzyczny, system tłumaczeń automatycznie wybierze odpowiedni język na podstawie aktualnego języka PrestaShop. Wszystkie komunikaty debug, nazwy eventów w konfiguracji oraz komunikaty systemowe będą wyświetlane w języku użytkownika.

12. Eventy – szczegóły
Szczegółowy opis implementacji każdego z 18 eventów obsługiwanych przez moduł.

page_view – Wyświetlenie strony
  • Kiedy: Na każdej stronie sklepu
  • Hook: displayHeader
  • Dane: page_type, page_url, page_title, language, currency, customer_status
  • Uwagi: Pierwszy event wysyłany na każdej stronie, zawiera pełne dane kontekstowe
view_item – Wyświetlenie produktu
  • Kiedy: Na stronie produktu
  • Hook: displayProductAdditionalInfo
  • Dane: currency, value, items[] (item_id, item_name, price, item_brand, item_category, quantity=1)
  • Źródło: $product = prestashop.page.product lub AJAX
view_item_list – Wyświetlenie listy produktów
  • Kiedy: Kategorie, strona główna, wyniki wyszukiwania
  • Hook: displayFooter (dla kategorii)
  • Dane: currency, item_list_id, item_list_name, items[] (wszystkie produkty z indeksem)
  • Uwagi: Używa prestashop.page.page_name do identyfikacji typu listy
select_item – Kliknięcie w produkt
  • Kiedy: Kliknięcie w link produktu z listy
  • Mechanizm: JavaScript click listener na .product-miniature a
  • Dane: currency, item_list_id, item_list_name, items[] (kliknięty produkt)
  • Źródło: data-product-gtm attribute lub AJAX
add_to_cart – Dodanie do koszyka
  • Kiedy: Po dodaniu produktu do koszyka
  • Mechanizm: Przechwytywanie PrestaShop event 'updateCart’
  • Dane: currency, value, items[] (dodany produkt z quantity)
  • Źródło: prestashop.page.product lub AJAX GetProductData
  • Uwagi: Wykrywa quantity z różnych źródeł (#quantity_wanted, event.reason.qty, event.resp.quantity)
remove_from_cart – Usunięcie z koszyka
  • Kiedy: Po usunięciu produktu z koszyka
  • Mechanizm: Click listener na .remove-from-cart
  • Dane: currency, value, items[] (usunięty produkt)
  • Źródło: Atrybuty data-id-product, data-price, data-name
view_cart – Wyświetlenie koszyka
  • Kiedy: Na stronie koszyka
  • Hook: displayShoppingCart
  • Dane: currency, value, items[] (wszystkie produkty w koszyku)
  • Źródło: $cart->getProducts()
begin_checkout – Rozpoczęcie zamówienia
  • Kiedy: Pierwszy krok realizacji zamówienia
  • Mechanizm: JavaScript na stronie checkout
  • Dane: currency, value, items[], coupon (jeśli jest)
  • Źródło: window.prestashop.cart
add_shipping_info – Wybór dostawy
  • Kiedy: Po wyborze metody dostawy
  • Hook: actionCarrierProcess
  • Dane: currency, value, items[], shipping_tier (nazwa przewoźnika)
  • Mechanizm: Również JavaScript listener na zmianę .delivery-option input
add_payment_info – Wybór płatności
  • Kiedy: Po wyborze metody płatności
  • Mechanizm: JavaScript listener na .payment-option input
  • Dane: currency, value, items[], payment_type (nazwa modułu płatności)
purchase – Zakup
  • Kiedy: Strona potwierdzenia zamówienia
  • Hook: displayOrderConfirmation
  • Dane: currency, transaction_id, value, tax, shipping, coupon, items[]
  • Źródło: $order = new Order($id_order)
  • Uwagi: Najważniejszy event dla konwersji
search – Wyszukiwanie
  • Kiedy: Użycie wyszukiwarki
  • Hook: actionSearch
  • Dane: search_term (fraza wyszukiwania)
  • Fallback: JavaScript sprawdza URL params (s=, search_query=)
login – Logowanie
  • Kiedy: Po zalogowaniu użytkownika
  • Hook: actionAuthentication
  • Mechanizm: Również JavaScript wykrywa zmianę ccpsUserLogged w sessionStorage
  • Dane: method: ’email’
sign_up – Rejestracja
  • Kiedy: Po rejestracji nowego klienta
  • Hook: actionCustomerAccountAdd
  • Mechanizm: Cookie ccps_just_registered przenoszony do sessionStorage
  • Dane: method: ’email’
add_to_wishlist – Lista życzeń
  • Kiedy: Dodanie produktu do wishlist
  • Mechanizm: Przechwytywanie fetch i XMLHttpRequest do blockwishlist
  • Dane: currency, value, items[] (dodany produkt)
  • Źródło: AJAX GetProductData
  • Uwagi: Działa z modułem blockwishlist
share – Udostępnianie
  • Kiedy: Kliknięcie w przycisk social share
  • Mechanizm: Click listener na .social-sharing a
  • Dane: method (facebook/twitter/pinterest/linkedin/email), content_type, item_id, items[]
  • Źródło: prestashop.page.product lub AJAX
select_promotion – Kliknięcie w promocję
  • Kiedy: Automatycznie jeśli produkt ma rabat
  • Hook: displayProductAdditionalInfo (razem z view_item)
  • Dane: currency, value, items[], promotion_id, promotion_name
  • Uwagi: Używa specific_prices dla danych promocji
Sukces
Wszystkie eventy są zgodne z oficjalną specyfikacją Google Analytics 4 Enhanced Ecommerce. Struktura danych items[] zawiera wszystkie wymagane i rekomendowane pola (item_id, item_name, price, quantity, item_brand, item_category). Moduł automatycznie normalizuje nazwy kategorii (pierwsza litera wielka) i obsługuje do 5 poziomów hierarchii kategorii.

13. Kalendarz eventów
Poniżej przedstawiamy kalendarz pokazujący kiedy i na których stronach są wysyłane poszczególne eventy.

Eventy na różnych typach stron:
StronaEventy automatyczneEventy interakcyjne
Strona głównapage_view, view_item_listselect_item
Kategoriapage_view, view_item_listselect_item
Wyszukiwaniepage_view, search, view_item_listselect_item
Produktpage_view, view_item, select_promotion (jeśli rabat)add_to_cart, add_to_wishlist, share
Koszykpage_view, view_cartremove_from_cart, begin_checkout
Checkoutpage_view, begin_checkoutadd_shipping_info, add_payment_info
Potwierdzeniepage_view, purchase
Logowaniepage_view, login
Rejestracjapage_view, sign_up
Ścieżka klienta (customer journey) z eventami:
  1. Strona główna → page_view, view_item_list
  2. Kliknięcie w produkt → select_item
  3. Strona produktu → page_view, view_item, (select_promotion)
  4. Dodanie do koszyka → add_to_cart
  5. Strona koszyka → page_view, view_cart
  6. Rozpoczęcie zamówienia → begin_checkout
  7. Wybór dostawy → add_shipping_info
  8. Wybór płatności → add_payment_info
  9. Potwierdzenie → page_view, purchase
Info
Każdy event automatyczny jest wysyłany przy załadowaniu strony (Hook PHP), natomiast eventy interakcyjne są wysyłane w odpowiedzi na działania użytkownika (JavaScript). Moduł inteligentnie wykrywa duplikaty i nie wysyła tego samego eventu dwukrotnie dla tej samej akcji.

14. Test Tag Assistant
Google Tag Assistant to oficjalne narzędzie Google do testowania i debugowania implementacji Google Tag Manager.

Testowanie z Tag Assistant:
  1. Zainstaluj rozszerzenie Tag Assistant Legacy by Google do Chrome
  2. Lub użyj nowego narzędzia Google Tag Assistant w Chrome DevTools
  3. Przejdź do strony sklepu
  4. Kliknij ikonę Tag Assistant w pasku narzędzi
  5. Kliknij „Enable” aby rozpocząć nagrywanie
  6. Odśwież stronę
  7. Wykonaj testowe akcje (dodaj do koszyka, przejdź do checkout, itp.)
  8. Przejrzyj raport Tag Assistant
Co sprawdzić w Tag Assistant:
  • GTM Tag Found – zielony znacznik oznacza poprawną instalację
  • DataLayer – sprawdź czy zawiera prawidłowe dane eventów
  • Fired Tags – lista tagów które zostały uruchomione
  • Variables – zmienne przesyłane do GTM
  • Errors – czerwone znaczniki wskazują na problemy
Konfiguracja tagów w GTM (przykład GA4):
  1. Zaloguj się do Google Tag Manager
  2. Przejdź do zakładki „Tagi”
  3. Kliknij „Nowy”
  4. Wybierz typ tagu: „Google Analytics: zdarzenie GA4”
  5. Wpisz ID Measurement (G-XXXXXXXXXX z GA4)
  6. Nazwa zdarzenia: {{Event}} (zmienna wbudowana)
  7. Wyzwalacz: „Custom Event” z nazwami eventów (add_to_cart, purchase, etc.)
  8. Lub wyzwalacz uniwersalny dla wszystkich eventów z dataLayer
  9. Zapisz i opublikuj kontener
Tryb podglądu GTM (Preview Mode):
  1. W GTM kliknij „Podgląd” w prawym górnym rogu
  2. Wpisz URL sklepu
  3. Kliknij „Connect”
  4. Otworzy się nowe okno z debuggerem GTM
  5. Wykonuj akcje w sklepie
  6. W debuggerze widać wszystkie eventy dataLayer w czasie rzeczywistym
  7. Sprawdź które tagi zostały uruchomione dla każdego eventu
Link do Tag Assistant:
Wskazówka
Oficjalne narzędzie Google do testowania znajduje się pod adresem: tagassistant.google.com

Możemy tam przetestować czy wszystko działa poprawnie, czy GTM jest zainstalowany i czy eventy są prawidłowo wysyłane do Google Analytics.

15. Rozwiązywanie problemów
GTM nie ładuje się na stronie
  1. Sprawdź czy GTM jest włączony w ustawieniach modułu
  2. Zweryfikuj poprawność GTM Container ID (format: GTM-XXXXXX)
  3. Wyczyść cache PrestaShop (Zaawansowane parametry → Wydajność → Wyczyść cache)
  4. Sprawdź źródło strony czy zawiera gtm.js i noscript iframe
  5. Wyłącz inne moduły które mogą modyfikować header
  6. Sprawdź czy nie ma błędów JavaScript w konsoli
Eventy nie są wysyłane
  1. Włącz tryb debug i sprawdź konsolę przeglądarki
  2. Sprawdź czy eventy są włączone w konfiguracji modułu
  3. Zweryfikuj czy dataLayer jest zdefiniowany (console.log(window.dataLayer))
  4. Sprawdź czy nie ma konfliktów z innymi modułami GTM
  5. Upewnij się że JavaScript modułu się załadował (ccpsgoogletrack.js)
  6. Sprawdź czy hookDisplayHeader jest wykonywany przez motyw
add_to_cart nie działa
  1. Włącz tryb debug i obserwuj logi w konsoli
  2. Sprawdź czy event 'updateCart’ PrestaShop jest wywoływany
  3. Zweryfikuj czy prestashop.on() jest dostępny
  4. Sprawdź czy produkty mają przypisane dane (id_product, cena, nazwa)
  5. Upewnij się że AJAX controller działa (/module/ccpsgoogletrack/ajax)
  6. Sprawdź czy nie ma błędów AJAX w zakładce Network
purchase nie rejestruje konwersji
  1. Sprawdź czy event purchase jest włączony
  2. Zweryfikuj czy jesteś na stronie order-confirmation
  3. Upewnij się że hookDisplayOrderConfirmation jest wykonywany
  4. Sprawdź czy zamówienie jest prawidłowo załadowane ($order)
  5. Włącz logowanie eventów i sprawdź czy purchase jest zapisywany
  6. W GTM sprawdź czy masz skonfigurowany tag GA4 dla eventu purchase
Tłumaczenia nie działają
  1. Sprawdź czy plik translations/XX.php istnieje dla Twojego języka
  2. Zweryfikuj format pliku (kodowanie UTF-8, poprawna składnia PHP)
  3. Wyczyść cache PrestaShop
  4. Sprawdź czy window.ccpsTranslations jest zdefiniowany w źródle strony
  5. Upewnij się że funkcja t() jest dostępna w JavaScript
Logowanie eventów nie działa
  1. Sprawdź czy funkcja jest włączona w ustawieniach
  2. Zweryfikuj czy tabela ps_ccpsgoogletrack_logs istnieje w bazie
  3. Sprawdź uprawnienia zapisu do bazy danych
  4. Upewnij się że AJAX controller przyjmuje requesty (action=LogEvent)
  5. Włącz WP_DEBUG i sprawdź logi błędów
  6. Sprawdź czy nie przekroczyłeś limitu rozmiaru tabeli
Własny kod nie wykonuje się
  1. Sprawdź czy funkcja jest włączona w ustawieniach
  2. Zweryfikuj czy kod jest poprawny JavaScript (sprawdź konsolę)
  3. Upewnij się że nie używasz tagów <script> w kodzie
  4. Sprawdź czy kod znajduje się w źródle strony (sekcja HEAD)
  5. Testuj kod kawałek po kawałku aby znaleźć błąd
Błąd
Jeśli problemy nadal występują, włącz tryb debug w ustawieniach modułu i logowanie eventów. Zbierz wszystkie informacje z konsoli przeglądarki, zakładki Network oraz logów eventów. Skontaktuj się ze wsparciem COCOS przez cocos.codes/wsparcie dołączając zebrane informacje.

16. FAQ
Czy moduł jest kompatybilny z PrestaShop 9.0?
Tak, moduł został przetestowany i jest w pełni kompatybilny z PrestaShop 1.7.x, 8.x oraz najnowszą wersją 9.0.

Czy mogę używać modułu bez konta Google Analytics?
Tak, moduł przesyła dane do Google Tag Manager. GTM może przekazywać dane do wielu różnych systemów, nie tylko do Google Analytics. Możemy wysyłać dane do Facebook Pixel, TikTok Pixel, własnych systemów analitycznych itp.

Czy moduł zwalnia sklep?
Nie, moduł jest zoptymalizowany pod kątem wydajności. Kod GTM ładuje się asynchronicznie, a wszystkie skrypty są zminifikowane. Wpływ na wydajność jest minimalny (< 0.1s czasu ładowania).

Czy mogę wyłączyć niektóre eventy?
Tak, w konfiguracji modułu możemy włączyć lub wyłączyć każdy z 18 eventów osobno. Wyłączone eventy nie są w ogóle wysyłane do dataLayer.

Jak działa wykrywanie add_to_cart?
Moduł przechwytuje event 'updateCart’ PrestaShop oraz nasłuchuje kliknięć w przyciski dodawania do koszyka. Automatycznie wykrywa quantity z różnych źródeł i pobiera dane produktu przez AJAX jeśli potrzeba.

Czy moduł obsługuje wielojęzyczność?
Tak, moduł posiada pełne tłumaczenia dla języka polskiego i angielskiego. Możemy łatwo dodać własne języki kopiując i tłumacząc pliki z katalogu translations/.

Co to jest Enhanced Conversions?
Enhanced Conversions to funkcja Google Ads która poprawia dokładność pomiaru konwersji poprzez przesyłanie hashowanych danych użytkowników (email, telefon, adres). Wymaga zgody RODO.

Czy moduł jest zgodny z RODO?
Moduł sam w sobie jest zgodny z RODO – hashuje wszystkie dane osobowe algorytmem SHA-256. Jednak aby być w pełni zgodnym, musimy mieć aktualną politykę prywatności i zgodę użytkowników na cookies. Zalecamy integrację z modułem zarządzania cookies.

Jak sprawdzić czy moduł działa poprawnie?
Włącz tryb debug w ustawieniach, otwórz konsolę przeglądarki (F12) i obserwuj logi. Możesz też użyć Google Tag Assistant lub trybu podglądu GTM aby zobaczyć wszystkie eventy w czasie rzeczywistym.

Czy mogę dodać własne eventy?
Tak, możesz użyć funkcji „Własny kod śledzący” w ustawieniach aby dodać dowolny JavaScript, który będzie wysyłał własne eventy do dataLayer.

Jak długo są przechowywane logi eventów?
Logi są przechowywane w bazie danych do momentu ręcznego wyczyszczenia. Zalecamy regularne czyszczenie logów (np. co miesiąc) aby nie zapełniać bazy danych.

Czy moduł działa z modułem cookies/GDPR?
Tak, moduł jest kompatybilny z większością modułów zarządzania zgodami cookies. Możemy zintegrować go z Google Consent Mode 2.0 przez własny kod śledzący.

Co się dzieje przy deinstalacji?
Moduł usuwa wszystkie swoje ustawienia z bazy danych (opcje, tabela logów). Nie usuwa natomiast plików modułu – te należy usunąć ręcznie z katalogu modules/ccpsgoogletrack/.

Czy mogę eksportować logi eventów?
Obecnie moduł nie posiada funkcji eksportu logów. Możemy jednak bezpośrednio zapytać bazę danych (tabela ps_ccpsgoogletrack_logs) lub dodać własną funkcję eksportu.

Jak często są aktualizowane tłumaczenia?
Tłumaczenia są aktualizowane przy każdej nowej wersji modułu. Jeśli brakuje tłumaczenia dla jakiegoś języka, możemy je dodać samodzielnie lub zgłosić do COCOS.

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ostatnio oglądane produkty

Nowość
PrestaShop Google Tag Manager PrestaShop Google Tag Manager

PrestaShop Google Tag Manager (GTM, GA4, ADS)

(0)
$49,00 bez VAT

WordPress System Rezerwacji Klientów 1.0.0

(3)
$49,00 bez VAT

[DARMOWY] PrestaShop PayNow

(0)
$0,00 bez VAT

Usługi programistyczne PrestaShop i WordPress

(2)
$27,00 bez VAT

Logowanie

Koszyk

Zamknij

Twój koszyk jest pusty.

Rozpocznij zakupy

Pasek boczny